In the field of computer networking, hardware in a system may be interconnected. For example, a server may be connected to client terminals, which may themselves be connected directly or through the server to peripheral devices. Communication between these interconnected hardware devices is controlled through software. With respect to the transmission of data from one client to another using object-oriented programming, the software objects may be serialized and transmitted through the server to the recipient client. In order for the server to process the transmitted data and in order for the recipient client to understand the data, the system must have a uniform definition of the object.
In interconnected systems, a versioning problem exists when the hardware or the software of one device is upgraded to a new version while other devices operate using an older version. In a system having multiple interconnected devices, it is possible for several different versions of the hardware and/or software to be running at the same time. In order for these devices to effectively communicate with each other, they must share some commonalities. For example, in a system using object oriented programming that defines certain classes, every device in the system must recognize the class; otherwise, the devices cannot properly communicate with each other. In a system that defines classes, both the sender and the recipient must understand the class and must have consistent definitions of those classes so that they may be properly interpreted. A versioning problem results when a newer version of a hardware or software device uses classes that are not defined in the earlier versions.
The problem with using different versions is that a user of an older version might not be able to recognize new classes that are defined in the newer version, because they were not defined in the original software. The problem may likewise affect the server that delivers the data from the sending client to the recipient client. If the server is of an older version and does not recognize the new classes of objects transmitted by the sending client, then the server may refuse to deliver the data to the recipient because it may lack the understanding of the data. The results of this versioning problem vary in existing systems. In some instances, the recipient client might receive the data, but will be unable to process it. In worse cases, existing clients, servers, or other devices in the system may entirely shut down if they do not recognize a new class definition of an object.
What is needed is a system for handling versioning problems that enables a user of an older version to receive new class definitions without completely shutting down. In particular, what is needed is a system that defines software objects such that new classes can be added by leveraging known definitions, such that an older version of a device will recognize and process some part of the new object classes without faulting.